! Original 1.0 ! **** Initial inventory **** Object bijl "battle axe" with description "The battle axe is razor-sharp and so heavy that few can lift it, but you can handle it with lethal speed and precision.", name 'axe' 'battle' 'battle-axe' 'weapon', has ; Object harnas "full suit of armour" with description [; if(verhaaltracker.brand == 0) "You are clad in a full suit of armour; its shiny steel plate, generously oiled, grants excellent protection against external threats. The suit has been fastened with leather straps at the back, and can only be removed with the help of others."; "The heat of the dragon's fire is so intense that even the steel of the armour is melting. White hot drops of liquid metal force their way through your skin like murderous knives."; ], name 'armour' 'suit' 'of' 'full' 'straps' 'leather', before [; Disrobe: "The suit of armour is secured with leather straps, fastened around your back; it is impossible to take it off by yourself. When you have defeated the dragon and returned to the world beyond the doors, your squire will help you."; ], has worn clothing; Object helm "helmet" with description [; if(self has open) "The helmet is functional, not decorative, and fits seamlessly with the rest of your armour. The visor is open, leaving your sight unobstructed but exposing your face to attack."; else "The helmet is functional, not decorative, and fits seamlessly with the rest of your armour. The visor is closed, giving maximal protection."; ], before [; Open: if(self has open) "The visor is already open."; else {give self open; "You open the visor of the helmet.";} return true; Close: if(self hasnt open) "The visor is already closed."; else {give self ~open; "You close the visor of the helmet.";} return true; Disrobe: if(parent(helm) == player) { give helm ~worn; if(parent(bijl) == player) {move helm to parent(player); "You take off the helmet and put it on the floor. You feel quite vulnerable without it.";} else "You take off the helmet; you feel quite vulnerable without it."; } Drop: if(parent(helm) == player) { if(helm has worn) { print "You take off the helmet and put it on the floor. You feel quite vulnerable without it."; } else { print "You carefully place the helmet on the floor."; } give helm ~worn; move helm to parent(player); ""; } Take: if(parent(bijl) == player && parent(helm) ~= player) {give helm worn; move helm to player; "You gather up the helmet and replace it over your head.";} else return false; Wear: if(TestScope(helm,player)) { if(parent(helm) == player) "You are already wearing the helmet."; move helm to player; give helm worn; "You replace the helmet on your head."; } ], name 'helmet' 'visor', has worn clothing open openable; ! **** Location: grot **** Object grot_hal "A bone-strewn vestibule" with description [; if(verhaaltracker.brand == 0) "This small rectangular hall has been chiselled painstakingly from the rock. The walls and ceiling are covered with slabs of black marble. Two bronze doors seal off the exit to the south, while a narrow cave to the north leads to the fiery lair of the dragon. Blackened bones and skulls litter the floor, casting long shadows in the flickering light that seeps in from the cave."; "Through the flames you see the black marble walls of the hall, the bones on the floor, and the two bronze doors that guard the only exit."; ], name 'vestibule' 'hall' 'small', n_to grot_grot, before [; Go: if(noun == n_to) {Grot_Hal_N();}; Smell: "The penetrating smell of sulphur fills the entire cave."; Listen: "From the north you hear restless snarling."; ], has light transparent; [ Grot_Hal_N; if(verhaaltracker.brand == 0) { print "You try to step around the human bones, but with each step several are crushed under the combined weight of you and your armour.^"; return false; } else { "Aimlessly you run around, crushing the bones and skulls of your predecessors--who fared no better against the dragon than you did--beneath your feet."; } ]; Object grot_deuren "bronze doors" grot_hal class Prop, with name 'doors' 'bronze' 'two' 'door', description "Two bronze doors block the exit to the south. The likeness of a burning man has been engraved on them.", before [; Open: "The doors have been bolted from the other side, and not even your strength can open them. It has been agreed that you will knock when you have defeated the dragon."; Close: "The doors are already closed."; Lock, Unlock: "There is no keyhole apparent."; Knock: if(verhaaltracker.brand == 0) { "Before you have even tried to kill the dragon? Only a coward would wish to leave already."; } else { print "Panicking, you run towards the doors. The burning man in the bronze relief looks at you with mocking eyes, the ecstatic grin with which he reacts to the flames surrounding him the exact opposite of your tortured cries. With the steel glove on your right hand you hit him as hard as you can; a tremendous, harrowing dissonance resounds through the cave."; VraagToets(0,0,0); print "But the doors do not move; and nobody opens them. Once again, screaming--while the heat of the flames vaporizes the life fluids in your veins--you hit the door with all the force you can muster; again the harsh sound rings out, like Satan beating a gong in the depths of Hell--but the door remains immobile. You feel how your hands slip downwards, but there is nothing you can do to remain standing... and the pain, the heat, darkness..."; EndSceneOne(); return true; } Attack: <>; ], has ~open openable pluralname; Object grot_man "burning man" grot_hal class Prop, with name 'burning' 'man' 'picture' 'engraving' 'depiction', description [; if(verhaaltracker.brand > 0) "Instead of the pain you would expect on the face of a burning man, the graven figure's expression speaks of craving and desire. To your horror, you realise that your own face bears a similar expression."; "Instead of the pain you would expect on the face of a burning man, the graven figure's expression speaks of craving and desire. It is as if the flames drive him towards the object of his lust, whatever that may be."; ], has male; Object grot_hal_vuur "fire" grot_hal class Prop, with name 'fire' 'flames' 'light', description "Beyond the cave to the north you see vast, leaping flames. The heat can be felt even here.", before [; Doof: if(verhaaltracker.brand == 0) {"You cannot extinguish such a sea of fire.";} else "Panic-stricken, you start beating on the flames, but are unable to extinguish them. They appear to grow bigger and hotter all the time."; ], has ; Object grot_marmer "marble" grot_hal class Prop, with name 'marble' 'black' 'sheets' 'walls' 'wall' 'ceiling' 'rock' 'slab' 'slabs', description "The walls and the ceiling of the hall have been covered with sheets of black marble. The white veins running through it form a pattern that starts spinning before your eyes when you look at it too long.", has ; Object grot_aders "pattern" grot_hal class Prop, with name 'vein' 'veins' 'pattern' 'lines' 'white', description "Stubbornly, you keep looking at the pattern, the lines that slowly start to move, to spin, to swirl--you feel dizziness overtaking you, and quickly focus your eyes on the cave behind which your fate awaits.", has pluralname; Object grot_botten "bones" grot_hal class Prop, with name 'bones' 'bone' 'skulls' 'skull' 'remains' 'skeleton' 'skeletons' 'ground' 'floor', description "Everywhere on the ground lie bones and skulls, blackened by the all-devouring fire that proved fatal to their owners.", before [; Take: "You don't like to be reminded of the failure of those who came before you."; ], has pluralname; Object grot_schaduwen "shadows" grot_hal class Prop, with name 'shadows' 'shadow' 'flickering', description "The shadows of the bones on the floor take on macabre forms.", has pluralname; Object grot_grot "A low passage" with description [; if(verhaaltracker.brand == 0) "The roof of the passageway is low, and you have to stoop to walk through. The floor is covered with a thick layer of ashes. The flames that erupt from the many cracks in the ground of the large hall to the north have an almost blinding intensity, and the heat is nigh unendurable. You are sweating heavily. To the south lies the relative coolness of the vestibule."; "You can barely see anything through the fire. The dragon is to the north; the vestibule lies to the south."; ], name 'passage' 'passageway' 'cave', n_to grot_zaal, s_to grot_hal, before [; Go: if(noun == s_to) {Grot_Grot_S();} else if(noun == n_to) {Grot_Grot_N();}; Listen: "From the hall in the north you seem to hear movement, like the shambling of a sluggish beast."; Examine: if(noun == n_obj) "The dragon lives in a gigantic hall. Many stories are told about its genesis, but nobody can say which of them, if any, are true."; Smell: "The penetrating smell of sulphur fills the entire cave."; ], has light transparent; [ Grot_Grot_S; if(verhaaltracker.brand == 0) { print "The scattered bones crunch underfoot as you walk back to the vestibule.^"; return false; } else { "Panicking, you run back to the vestibule, not sparing so much as a glance for the bones that are strewn all over the ground. With each frantic step, you hear more bones break under the combined weight of you and your armour."; } ]; [ Grot_Grot_N; if(verhaaltracker.brand == 0) { if(parent(bijl) == player) {print "Holding the axe tightly, ";} else {print "Unarmed, ";}; if(parent(helm) == player && helm hasnt open) print "the visor of your helmet closed--less honourable, but more prudent--, "; if(parent(helm) == player && helm has open) print "the visor of your helmet opened, as behooves a man of honour, "; if(parent(helm) ~= player) print "brave and gallant, without your helmet, "; print "you approach the dragon.^"; return false; } else { "Screaming and crying, no room for thought in your mind, you run back into the hall of the dragon, towards doom and fire."; } ]; Object grot_as "thick layer of ashes" grot_grot class Prop, with description "A layer of tamped down ashes covers the ground; your feet leave hardly an impression.", name 'ash' 'layer' 'thick' 'ground' 'floor' 'ashes', before [; Take: "You bend down to the ground and scrape at the ashes with your armoured fingers, but they are compacted so tightly that too little comes loose to pick up."; ], has ; Object grot_fake_draak "dragon" grot_grot with name 'dragon', description "The dragon is in the large hall to the north.", before [; Examine: return false; default: "You will first have to enter the hall to the north."; ], life [; default: "You will first have to enter the hall to the north."; ], has male animate scenery; Object grot_voetstap "footprints" grot_grot class Prop, with description "Your footprints are only just visible in the compact layer of ashes covering the floor.", name 'footprint' 'footprints' 'impression' 'impressions' 'footsteps' 'footstep', has pluralname; Object grot_grot_vuur "fire" grot_grot class Prop, with name 'fire' 'flames' 'light' 'flame', description "Flames several meters high illuminate the hall to the north.", before [; Doof: if(verhaaltracker.brand == 0) {"You cannot extinguish such a sea of fire.";} else "Panic-stricken, you start beating on the flames, but are unable to extinguish them. They appear to grow bigger and hotter all the time."; ], has ; Object grot_grot_spleet "cracks" grot_grot class Prop, with name 'crack' 'cracks' 'fissure' 'fissures' 'cleft' 'clefts' 'crevice' 'crevices', description "The ground of the hall to the north is cleaved by cracks.", has ; Object grot_zaal "An underground hall" with description [; if(verhaaltracker.brand == 0) "The hall is dozens of meters high and hundreds of meters wide and deep. The floor is covered with a thick layer of ash, except where cracks and fissures cleave the rock. Huge flames shoot upwards out of these cracks. The heat is almost unbearable."; "You can hardly keep your eyes open, and see only flashes of the hall--flames, cracks, the passageway to the south, and, closer every moment, the infernal monster."; ], name 'hall' 'large' 'gigantic' 'underground', s_to grot_grot, cant_go [; if(verhaaltracker.brand > 0) { print "You run around aimlessly, overwhelmed by fear. You can hardly see where you are going; everything is fire, flames, smoke, flickering light. You trip, fall, jump up again--the fear gives you such power that you hardly feel the weight of your armour. You stagger in a random direction; then, suddenly, you step into nothingness and fall forwards into a cleft. Desperately you try to grab onto something, but the walls are flat and featureless, and you tumble deeper and deeper. Smoke and sulfid vapours fill the cleft and you can hardly breath. You cough, trying to get a gasp of fresh air, but it is the poisonous vapours that fill your lungs. Even before you hit the ground, you lose consciousness.^"; EndSceneOne(); return true; }; "The only exit lies to the south."; ], initial [; if(verhaaltracker.draak == 0) { verhaaltracker.draak = 1; StartDaemon(grot_draak); } ], before [; Smell: "The penetrating smell of sulphur fills the entire cave."; Listen: "The dragon sniffs angrily, then roars."; ], has light transparent; Object grot_draak "dragon" grot_zaal with description "Thirty meters from the tip of its tail to its head, its hide an angry red with scales that gleam like the hardest steel; but it is the fire in its eyes and throat, the play of flames behind its rows of pale teeth, that is truly horrifying. This is more than a monster with fiery breath; it is fire itself that stands before you. Fighting the dragon suddenly seems like doing battle with the all-devouring flame, like waging war against an indomitable force of nature that will destroy all men, one by one, and can never be defeated.", name 'dragon' 'enormous' 'scaly' 'infernal' 'monster' 'red' 'angry' 'beast', counting 0, daemon ! This daemon regulates the movement of the dragon, his attempts to set the player on fire [; ! or eat him, and finally the player's possible death through burning. if(self.counting == 0) {print "^In the middle of the hall is the dragon, an enormous, red, scaly monster. It turns its head towards you, and stares at you with two big yellow eyes.^";}; if(self.counting == 1 && verhaaltracker.brand == 0) { if(parent(player) == grot_zaal) { print "^The dragon turns towards you, and approaches you with heavy steps. It opens its mouth and emits a cry that makes the entire cave shake. For a moment you stagger, but then regain your balance.^"; }; if(parent(player) == grot_grot) { print "^You run away, but behind you hear the thundering footsteps of the dragon, hot in pursuit. His blood-curdling cry echoes through the subterranean vaults.^"; }; }; if(self.counting == 2 && verhaaltracker.brand == 0) { if(parent(player) == grot_zaal) { print "^An immense jet of fire spews forth from the mouth of the dragon, past its sharp teeth, and surrounds you completely. The pain makes you gasp.^"; verhaaltracker.brand = 1; move draak_vuur to player ; }; if(parent(player) == grot_grot) { print "^The dragon is now very near to the northern entry of the passageway. In the back of its black mouth burns a fire that becomes brighter every moment.^"; }; if(parent(player) == grot_hal) { print "^As fast as you can you run across the bones, away from the monstrosity. Smoke billows out of the cave, and a deep growl makes the walls shake.^"; }; } if(self.counting == 3 && verhaaltracker.brand == 0) { if(parent(player) == grot_zaal) { print "^An immense jet of fire spews forth from the mouth of the dragon, past its sharp teeth, and surrounds you completely. The pain makes you gasp.^"; verhaaltracker.brand = 1; move draak_vuur to player ; }; if(parent(player) == grot_grot) { print "^The dragon's gaping maw appears at the north end of the passageway, breathing an immense jet of fire towards you. Before you can react, you are engulfed in flame; you cannot stifle a cry of pain.^"; verhaaltracker.brand = 1; move draak_vuur to player ; }; if(parent(player) == grot_hal) { print "^The passageway to the north is now filled with a sea of flames; flames that seem to reach further into the hall every moment, like the tentacles of a hungry creature of fire and heat seeking its prey.^"; }; }; if(self.counting == 4 && verhaaltracker.brand == 0) { if(parent(player) == grot_grot) { print "^The dragon's gaping maw appears at the north end of the passageway, breathing an immense jet of fire towards you. Before you can react, you are engulfed in flame; you cannot stifle a cry of pain.^"; verhaaltracker.brand = 1; move draak_vuur to player ; }; if(parent(player) == grot_hal) { print "^Once again you hear the cry of the dragon, high, unearthly, full of hate and anger. A moment later the fire bursts from the passageway into the hall, filling it completely. There is no escape, and before you can do anything the flames have surrounded you. You gasp at the pain.^"; verhaaltracker.brand = 1; move draak_vuur to player ; }; }; if(self.counting > 3 && parent(player) == grot_zaal) { print "^Enveloped in the deadly cloud of flames, you can barely see anything around you; but when the sharp teeth of the dragon penetrate your armour as if it were butter and enter your body, you become aware of your fate. With a terrible crushing sound--your armour? your bones? you wonder for an instant--the dragon brings its jaws together. Your mouth fills with blood, your entire body screams with pain, and darkness comes as a blessing...^"; EndSceneOne(); }; if(verhaaltracker.brand == 2) { print "^You are enveloped by flames, and can hardly see anything. The heat inside your armour is unbearable.^"; }; if(verhaaltracker.brand == 3) { print "^The pain worsens with every moment. You beat around you wildly, hoping to extinguish the flames, but they only seem to grow bigger. To your dread, you feel your armour slowly start to melt.^"; }; if(verhaaltracker.brand == 4) { print "^The melting metal penetrates your skin, becomes one with your flesh. You see nothing, you hear nothing, you only feel pain as you fall to your knees, scream a last scream before your vocal cords burn away, and sink finally into unconsciousness. Darkness falls over you like a cool blanket...^"; EndSceneOne(); }; self.counting++; if(verhaaltracker.brand > 0) verhaaltracker.brand++; ], attack 0, life [; Attack, ThrowAt: if(self.attack > 0 || verhaaltracker.brand > 0) { print "You fight off the pain and charge again--the monster must die, even if the price is to be your own life. Through the flames you see the pale circles of the beast's vast yellow eyes; "; if(parent(bijl) == player) print "you raise your axe to plant it right between them."; if(parent(bijl) ~= player) print "you clench your fists and spread your arms just wide enough to hit both eyes at the same time."; print " But suddenly the dragon's tail swings in from the side, hitting you with enough force to send you flying many meters through the hall before your head crashes into a wall, bringing you to a halt."; if(helm has worn) print " The helmet softens the blow, and you manage to retain your senses. When you open your eyes, you see the head of the dragon approaching you, its mouth wide open--once again it breathes its deadly fire, and after a short scream you can no longer hear yourself. The darkness falls over you like a cool blanket.^"; if(helm hasnt worn) print " Your skulls fractures immediately, and everything turns black.^"; EndSceneOne(); return true; }; if(self.attack == 0 && verhaaltracker.brand == 0) { if(parent(bijl) == player) print "With the axe raised you step towards the dragon, determined to kill the creature. "; if(parent(bijl) ~= player) print "With only your armoured fists as weapons you step towards the dragon, determined to overcome him with a single heavy blow. "; print "The monster looks at you with its penetrating gaze, and opens its mouth. Teeth as long as your upper arm form two rows behind each other, and in the depths of the dragon's throat a fire seems to be burning. But you don't let that intimidate you, and keep walking towards him at a brisk pace. Then--so fast and suddenly that you do not even have the time to try and duck away-- the fire bursts out from the mouth of the dragon, a jet dozens of meters long that envelops you from head to toe. The pain makes you gasp.^"; verhaaltracker.brand = 1; }; self.attack++; return true; ], has animate scenery neuter; Object grot_spleten "cracks" grot_zaal class Prop, with description "Broad cracks split the ground wherever you look. Because of the flames leaping out of them, you cannot see the bottom.", name 'crack' 'cracks' 'fissure' 'fissures' 'cleft' 'clefts' 'crevice' 'crevices', before [; Enter: if(verhaaltracker.brand > 0) { print "You choose the fastest way to end it all, and jump into one of the deep crevices. You fall and fall, through fire and smoke, deeper and deeper, until the crevice gives way to a subterranean vault spanning a lake of boiling lava. For a fraction of a heartbeat you stare in wonder at this beautiful sight--then you fall into the lava, and you feel how your entire body becomes fire, how your spirit and soul become fire, flames, heat, light...--then all is darkness."; EndSceneOne(); return true; } else { "All that awaits you there is death."; }; ], has pluralname container open enterable; Object grot_zaal_vuur "fire" grot_zaal class Prop, with name 'fire' 'flames' 'light' 'flame', description "Flames several meters high spring from the ground everywhere.", before [; Doof: if(verhaaltracker.brand == 0) {"You cannot extinguish such a sea of fire.";} else "Panic-stricken, you start beating on the flames, but are unable to extinguish them. They appear to grow bigger and hotter all the time."; ], has ; Object draak_vuur "devouring fire" with name 'flames' 'fire' 'devouring', description "A chaotic play of flames envelops you from head to toe.", before [; Drop: "You can't drop flames."; Doof: "Panic-stricken, you start beating on the flames, but are unable to extinguish them. They appear to grow bigger and hotter all the time."; ], has ;